/*
	Written By Pradipna Nepal
	www.pradsprojects.com

	Copyright (C) 2012 Prads Projects
	Please read COPYING.txt included along with this source code for more detail.
	If not included, see http://www.gnu.org/licenses/
*/

#ifndef LIBIDENTIFIERTABLE_H
#define LIBIDENTIFIERTABLE_H

#include <map>
#include <vector>
#include <string>
#include "resTokenTypes.h"
#include "libTokenModule.h"
#include "libHash.h"
#include "libFunctionTable.h"
using namespace std;
using namespace Hash;

struct IdentEntry {
	string name, type, initialValue;
	int size, index;	//index + base pointer = address in memory (index = offset)
};

typedef multimap<unsigned int, IdentEntry> IdentTable;

namespace IdentifierTable {
	void createIdentTable(vector<TokenModule> *modules, const FuncTable *funcTable, 
		vector<IdentTable> *tOut);
}

#endif